package cn.tedu.rabbitmqspring.m2;

import org.springframework.amqp.core.Queue;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;

import javax.annotation.PostConstruct;

@SpringBootApplication
public class Main {
    public static void main(String[] args) {
        SpringApplication.run(Main.class,args);

    }
//    import org.springframework.amqp.core.Queue;
    @Bean
    public Queue taskQueue(){
        //自动封装队列参数
        //自动配置类会自动发现这个对象并在服务器上创建这个队列
        return new Queue("task_queue111",true);
    }

    //用生产者发送消息
    @Autowired
    private Producer p;

    /*
    @PostConstruct
        spring在完成扫描创建实例，完成所有的依赖注入后，
        会自动的执行 @PostConstruct

    spring单线程执行下面的流程：
        创建实例 --> 完成注入 -->  @PostConstruct --> 后续配置
     */
    @PostConstruct
    public void test(){
//        new Thread(new Runnable() {
//            @Override
//            public void run() {
//                //线程中执行的代码
//            }
//        }).start();

        // lambda表达式,匿名内部类的简写
        new Thread(() ->p.send()).start();
    }
}
